/*
 * 获取Jenks算法的分类边界值
 *
 * Jenks算法的第二部分：根据计算得到的矩阵，推导出n个分类边界值。
 *
 * @private
 */
function jenksBreaks(data, lowerClassLimits, nClasses) {
    let k = data.length;
    const kclass = [];
    let countNum = nClasses;

    // 分类计算中永远不会包含上界，因此需要显式设置
    kclass[nClasses] = data[data.length - 1];

    // lowerClassLimits矩阵在这里被用作自身的索引
    // 注意：`k`变量在每次迭代中被重用
    while (countNum > 0) {
        kclass[countNum - 1] = data[lowerClassLimits[k][countNum] - 1];
        k = lowerClassLimits[k][countNum] - 1;
        countNum--;
    }

    return kclass;
}

export default jenksBreaks;
